package dwarffortress.data;

import dwarffortress.annotations.*;

/**
 * @author kouznetsov
 *         Created on 01.09.2009
 */
public class DFUnitElement {
    int f000_id;
    @FixedValue(value = 0, essential = true)
    int f001_zero;
    @FixedValue(value = 0, essential = true)
    byte f002_zero;
    @FixedValue(value = 1, essential = true)
    byte f003_one;

    String f004_name;

    @FixedValue(value = 0, essential = true)
    short f005_zero;

    int f006_someref;
    int f007_someref;

    int f008_someref_or_negone;
    @FixedValue(value = -1)
    int f009_negone;
    @FixedValue(value = -1)
    int f010_negone;
    int f011_someref_or_negone;
    int f012_someref_or_negone;

    short f013_somevalue;
    short f014_somevalue;
    short f015_somevalue;
    @FixedValue(value = 0, essential = true)
    int f016_zero;
    @FixedValue(value = 0, essential = true)
    short f017_zero;

    short f018_somevalue;
    short f019_somevalue;
    @FixedValue(value = 0, essential = true)
    short f020_zero;
    short f021_somevalue;
    @FixedValue(value = 0, essential = true)
    short f022_zero;
    short f023_somevalue;

    short f024_somevalue;
    int f025_somevalue;

    @FixedValue(value = -1)
    int f026_negone;
    short f027_somevalue_zero_negone;
    short f028_somevalue_zero_negone;
    short f029_somevalue_zero_negone;
    short f030_somevalue_zero_negone;
    short f031_somevalue_zero_negone;
    short f032_somevalue_zero_negone;

    @FixedLength(length = 3)
    short[] f033_short_list;

    @FixedValue(value = (byte) 0xd0, essential = true)
    byte f034_0xd0;
    @FixedValue(value = (byte) 0x8a, essential = true)
    byte f035_0x8a;
    @FixedValue(value = (byte) 0xd0, essential = true)
    byte f036_0xd0;
    @FixedValue(value = (byte) 0x8a, essential = true)
    byte f037_0x8a;
    @FixedValue(value = (byte)0xd0, essential = true)
    byte f038_0xd0;
    @FixedValue(value = (byte)0x8a, essential = true)
    byte f039_0x8a;

    @SpecialLength(fieldRef = FieldRef.FIXED, fixedSize = 0xAF)
    byte[] f040_skip_it;



    @FixedValue(value = (byte) 0xd0, essential = true)
    byte f041_0xd0;
    @FixedValue(value = (byte) 0x8a, essential = true)
    byte f042_0x8a;
    @FixedValue(value = (byte) 0xd0, essential = true)
    byte f043_0xd0;
    @FixedValue(value = (byte) 0x8a, essential = true)
    byte f044_0x8a;
    @FixedValue(value = (byte)0xd0, essential = true)
    byte f045_0xd0;
    @FixedValue(value = (byte)0x8a, essential = true)
    byte f046_0x8a;


    @FixedValue(value = 0, essential = true)
    int f047_zero;

    @FixedValue(value = -1)
    int f048_negone;
    @FixedValue(value = 0, essential = true)
    int f049_zero;

    int f050_someref;
    int f051_somevalue;
    int f052_somevalue_or_negone;
    @FixedValue(value = 0, essential = true)
    byte f053_zero;

    short f054_somevalue_or_negone;
    @SpecialLength(fieldRef = FieldRef.FIXED, fixedSize = 20)
    short[] f055_list_of_negones;
    @SpecialLength(fieldRef = FieldRef.FIXED, fixedSize = 27)
    short[] f056_list_of_values_or_negones;
    @FixedValue(value = 0, essential = true)
    byte f057_zero;

    short[] f058_list_of_0f;
    @SameLengthAsPrevious
    int[] f059_list_of_zeros;

    @SpecialLength(fieldRef = FieldRef.FIXED, fixedSize = 99)
    byte[] f060_skip_it;
    Inner[] f061_some_triplets;
    @FixedValue(value = 0, essential = true)
    byte f062_zero;

//
//    @FixedValue(value = 0, essential = true)
//    short f040_zero;
//    @FixedValue(value = 0, essential = true)
//    short f041_zero;
//    @FixedValue(value = 0, essential = true)
//    short f042_zero;
//    @FixedValue(value = 0, essential = true)
//    short f043_zero;
//
    public static class Inner {
        short first;
        short second;
        @FixedValue(value = 0)
        short third;
    }
}
